package web.suzy.oj.service.oj.impl;

import org.springframework.stereotype.Service;
import web.suzy.oj.common.result.ResultBean;
import web.suzy.oj.manager.oj.CommonManager;
import web.suzy.oj.pojo.entity.problem.CodeTemplate;
import web.suzy.oj.pojo.entity.problem.Language;
import web.suzy.oj.pojo.entity.problem.Tag;
import web.suzy.oj.pojo.vo.CaptchaVO;
import web.suzy.oj.pojo.vo.ProblemTagVO;
import web.suzy.oj.service.oj.CommonService;

import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: CommonServiceImpl
 * 描述: ---- 待定 -----
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/11/14 12:49
 */
@Service
public class CommonServiceImpl implements CommonService {
    @Resource
    private CommonManager commonManager;

    /**
     * 方法名: getCaptcha
     * 描述: 获取验证码
     *
     * @return web.suzy.oj.common.result.ResultBean<web.suzy.oj.pojo.vo.CaptchaVO>
     * @date 2022/11/14 12:49
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<CaptchaVO> getCaptcha() {
        return ResultBean.successResponse(commonManager.getCaptcha());
    }

    /**
     * 方法名: getProblemTagsAndClassification
     * 描述: 获取题目标签和标签分类
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.vo.ProblemTagVO>>
     * @date 2022/12/11 16:10
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<List<ProblemTagVO>> getProblemTagsAndClassification() {
        return ResultBean.successResponse(commonManager.getProblemTagsAndClassification());
    }

    /**
     * 方法名: getAllProblemTagsList
     * 描述: 获取所有标签列表
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.Tag>>
     * @date 2022/12/11 20:32
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<List<Tag>> getAllProblemTagsList() {
        return ResultBean.successResponse(commonManager.getAllProblemTagsList());
    }

    /**
     * 方法名: getProblemTags
     * 描述: 根据题目ID获取题目标签
     *
     * @param pid 题目ID
     * @return web.suzy.oj.common.result.ResultBean<java.util.Collection < web.suzy.oj.pojo.entity.problem.Tag>>
     * @date 2022/12/11 20:55
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Collection<Tag>> getProblemTags(Long pid) {
        return ResultBean.successResponse(commonManager.getProblemTags(pid));
    }

    /**
     * 方法名: getLanguages
     * 描述: 获取所有编程语言
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.Language>>
     * @date 2022/12/11 21:12
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<List<Language>> getLanguages() {
        return ResultBean.successResponse(commonManager.getLanguages());
    }

    /**
     * 方法名: getProblemLanguages
     * 描述: 根据题目ID获取题目支持的语言
     *
     * @param pid
     * @return web.suzy.oj.common.result.ResultBean<java.util.Collection < web.suzy.oj.pojo.entity.problem.Language>>
     * @date 2022/12/11 21:44
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Collection<Language>> getProblemLanguages(Long pid) {
        return ResultBean.successResponse(commonManager.getProblemLanguages(pid));
    }

    /**
     * 方法名: getProblemCodeTemplate
     * 描述: 根据题目ID获取题目代码模板
     *
     * @param pid 题目ID
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.CodeTemplate>>
     * @date 2022/12/11 21:58
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<List<CodeTemplate>> getProblemCodeTemplate(Long pid) {
        return ResultBean.successResponse(commonManager.getProblemCodeTemplate(pid));
    }
}
